package com.dlyk.web;

import com.dlyk.model.ActivityRemark;
import com.dlyk.query.ActivityRemarkQuery;
import com.dlyk.result.R;
import com.dlyk.service.ActivityRemarkService;
import com.github.pagehelper.PageInfo;
import jakarta.annotation.Resource;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;

/**
 * 市场活动备注
 */
@RestController
public class ActivityRemarkController {

    /*
        get 和 delete 请求传参数是一样
        post 和 put 请求传参数是一样

        1、formData 往后端传参数，

            前端是 get、delete、post、put 请求，后端接收：
                @RequestParam
                request.getParamter()
                UserQuery 对象把参数一个个映射到对象中


        2、{id : 1208, name : '张三', phone : '13720202020'}

            前端是 get、delete 请求，后端接收：
                @RequestParam
                request.getParamter()
                UserQuery 对象把参数一个个映射到对象中

            前端是 post、put 请求，后端接收：
                @RequestBody 注解接收，因为前端传过来的是 json 格式


        3、/api/user/12056

            前端是 get、delete、post、put 请求，后端接收：
                @PathVariable()注解接收参数


        4、在请求头传的参数，header 里面放了一个参数

            前端是 get、delete、post、put 请求，后端接收：
                @RequestHeader()注解接收
                request.getHeader()方法接收


        5、前端传过来的是文件
            接收：MultipartFile
    */

    @Resource
    private ActivityRemarkService activityRemarkService;

    /**
     * 添加市场活动备注
     */
    @PostMapping("/api/activity/remark/add")
    public R addActivityRemark(@RequestBody ActivityRemarkQuery activityRemarkQuery, Authentication authentication) {

        // 前端axios发送post请求时
        // 如果参数是FormData对象，则后端可以直接使用对象接收
        // 如果参数是json数据，则后端使用对象接收时，需要使用@RequestBody注解

        int save = activityRemarkService.saveActivityRemark(activityRemarkQuery, authentication);

        return save >= 1 ? R.OK() : R.FAIL();
    }

    /**
     * 根据市场活动id查询市场活动备注
     */
    @GetMapping("/api/activity/remark/list")
    public R activityRemarkList(@RequestParam(value = "current", required = false) Integer current,
                                @RequestParam("activityId") Integer activityId) {

        if (current == null) {
            current = 1;
        }

        PageInfo<ActivityRemark> pageInfo = activityRemarkService.getActivityRemarkListByActivityId(current, activityId);

        return R.OK(pageInfo);
    }

    /**
     * 编辑备注
     */
    @PutMapping("/api/activity/remark/edit")
    public R editActivityRemark(ActivityRemarkQuery activityRemarkQuery, Authentication authentication) {

        int edit = activityRemarkService.editActivityRemark(activityRemarkQuery, authentication);

        return edit >= 1 ? R.OK() : R.FAIL();
    }

    /**
     * 删除备注
     */
    @DeleteMapping("/api/activity/remark/remove/{id}")
    public R removeActivityRemark(@PathVariable("id") Integer id) {

        int remove = activityRemarkService.removeActivityRemarkById(id);

        return remove >= 1 ? R.OK() : R.FAIL();
    }

}

